package hw2.cs236369.interfaces;


import java.util.Collection;

/**
 * All the information on an author
 * 
 * @author Gal Lalouche
 * 
 */
public interface IDBLPInfo {
	
	/**
	 * Returns the Author
	 * @return The author
	 */
	IAuthor getAuthor ();
	/**
	 * Returns the Author's papers
	 * @return The author's papers
	 */
	Collection<IPaper> getPapers();
	/**
	 * Returns the total number of papers written by the author
	 * @return The total number of papers written by the author 
	 */
	int getNumberOfPapers();

	/**
	 * Gets the average number of papers written by the authors per year (since first publication)
	 * @return The average number of papers written by the authors per year (since first publication)
	 */
	double getAverageNumberOfPapersPerYear();

	/**
	 * Gets the maximum number of papers published in any one year
	 * @return The maximum number of papers published in any one year
	 */
	int getMaxNumberOfPapersPerYear();
	
	/**
	 * Gets the first year the author published a paper
	 * @return The first year the author published a paper
	 */
	int getFirstPublicationYear();

	/**
	 * Gets the last year the author published a paper
	 * @return The last year the author published a paper
	 */
	int getLastPublicationYear();

	/**
	 * Gets the average number of coauthors per paper written by the author
	 * @return The average number of coauthors per paper written by the author
	 */
	double getAverageCoauthorsPerPaper();

	/**
	 * Gets the total number of unique coauthors the author wrote papers with
	 * @return The total number of unique coauthors the author wrote papers with
	 */
	int getTotalNumberOfCoauthors();
	
	/**
	 * Gets a print friendly version
	 * @return A print friendly display of the infromation
	 */
	String toPrintableString();
	

}
 